[38;2;230;219;116mwith HAL.GPIO;[0m
[38;2;230;219;116mwith USB.Device.HID.Keyboard;[0m

[38;2;249;38;114mgeneric[0m
[38;2;249;38;114m   [0m[38;2;166;226;46mNb_Bounce[0m[38;2;249;38;114m :[0m[38;2;248;248;242m Natural;[0m
[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m ColR [0m[38;2;249;38;114mis[0m[38;2;248;248;242m (<>);[0m
[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m RowR [0m[38;2;249;38;114mis[0m[38;2;248;248;242m (<>);[0m

[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m GPIOP [0m[38;2;249;38;114mis[0m[38;2;248;248;242m [0m[38;2;249;38;114mnew[0m[38;2;248;248;242m HAL.GPIO.GPIO_Point [0m[38;2;249;38;114mwith[0m[38;2;248;248;242m [0m[38;2;249;38;114mprivate[0m[38;2;248;248;242m;[0m

[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m Cols_T [0m[38;2;249;38;114mis[0m[38;2;248;248;242m [0m[38;2;249;38;114marray[0m[38;2;248;248;242m (ColR) [0m[38;2;249;38;114mof[0m[38;2;248;248;242m GPIOP;[0m
[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m Rows_T [0m[38;2;249;38;114mis[0m[38;2;248;248;242m [0m[38;2;249;38;114marray[0m[38;2;248;248;242m (RowR) [0m[38;2;249;38;114mof[0m[38;2;248;248;242m GPIOP;[0m

[38;2;249;38;114m   [0m[38;2;166;226;46mCols[0m[38;2;249;38;114m :[0m[38;2;248;248;242m Cols_T;[0m
[38;2;249;38;114m   [0m[38;2;166;226;46mRows[0m[38;2;249;38;114m :[0m[38;2;248;248;242m Rows_T;[0m
[38;2;249;38;114m   [0m[38;2;166;226;46mNum_Layers[0m[38;2;249;38;114m :[0m[38;2;248;248;242m Natural;[0m

[38;2;248;248;242m   [0m[38;2;249;38;114mwith[0m[38;2;248;248;242m [0m[38;2;249;38;114mprocedure[0m[38;2;248;248;242m [0m[38;2;166;226;46mLog[0m[38;2;248;248;242m (S : String; L :  Integer := [0m[38;2;190;132;255m1[0m[38;2;248;248;242m; Deindent : Integer := [0m[38;2;190;132;255m0[0m[38;2;248;248;242m);[0m
[38;2;249;38;114mpackage[0m[38;2;248;248;242m [0m[38;2;166;226;46mClick[0m[38;2;248;248;242m [0m[38;2;249;38;114mis[0m

[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m Keys_T [0m[38;2;249;38;114mis[0m[38;2;248;248;242m [0m[38;2;249;38;114mrecord[0m
[38;2;249;38;114m      [0m[38;2;166;226;46mCols[0m[38;2;249;38;114m :[0m[38;2;248;248;242m Cols_T;[0m
[38;2;249;38;114m      [0m[38;2;166;226;46mRows[0m[38;2;249;38;114m :[0m[38;2;248;248;242m Rows_T;[0m
[38;2;248;248;242m   [0m[38;2;249;38;114mend record[0m[38;2;248;248;242m;[0m

[38;2;249;38;114m   [0m[38;2;166;226;46mKeys[0m[38;2;249;38;114m :[0m[38;2;248;248;242m Keys_T :=[0m
[38;2;248;248;242m     (Rows => Rows, Cols => Cols);[0m

[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m Key_Matrix [0m[38;2;249;38;114mis[0m[38;2;248;248;242m [0m[38;2;249;38;114marray[0m[38;2;248;248;242m (ColR, RowR) [0m[38;2;249;38;114mof[0m[38;2;248;248;242m Boolean;[0m

[38;2;248;248;242m   [0m[38;2;117;113;94m--[0m[38;2;117;113;94m------------------------[0m
[38;2;248;248;242m   [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  Events & Debouncing --[0m
[38;2;248;248;242m   [0m[38;2;117;113;94m--[0m[38;2;117;113;94m------------------------[0m

[38;2;249;38;114m   [0m[38;2;166;226;46mMaxEvents[0m[38;2;249;38;114m :[0m[38;2;248;248;242m [0m[38;2;249;38;114mconstant[0m[38;2;248;248;242m Positive := [0m[38;2;190;132;255m20[0m[38;2;248;248;242m;[0m

[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m EventT [0m[38;2;249;38;114mis[0m[38;2;248;248;242m (Press, Release);[0m
[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m Event [0m[38;2;249;38;114mis[0m[38;2;248;248;242m [0m[38;2;249;38;114mrecord[0m
[38;2;249;38;114m      [0m[38;2;166;226;46mEvt[0m[38;2;249;38;114m :[0m[38;2;248;248;242m EventT;[0m
[38;2;249;38;114m      [0m[38;2;166;226;46mCol[0m[38;2;249;38;114m :[0m[38;2;248;248;242m ColR;[0m
[38;2;249;38;114m      [0m[38;2;166;226;46mRow[0m[38;2;249;38;114m :[0m[38;2;248;248;242m RowR;[0m
[38;2;248;248;242m   [0m[38;2;249;38;114mend record[0m[38;2;248;248;242m;[0m

[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m Events [0m[38;2;249;38;114mis[0m[38;2;248;248;242m [0m[38;2;249;38;114marray[0m[38;2;248;248;242m (Natural [0m[38;2;249;38;114mrange[0m[38;2;248;248;242m <>) [0m[38;2;249;38;114mof[0m[38;2;248;248;242m Event;[0m

[38;2;248;248;242m   [0m[38;2;249;38;114mfunction[0m[38;2;248;248;242m [0m[38;2;166;226;46mGet_Events[0m[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m Events;[0m
[38;2;248;248;242m   [0m[38;2;249;38;114mfunction[0m[38;2;248;248;242m [0m[38;2;166;226;46mUpdate[0m[38;2;248;248;242m (NewS : Key_Matrix) [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m Boolean;[0m

[38;2;248;248;242m   [0m[38;2;117;113;94m--[0m[38;2;117;113;94m-----------[0m
[38;2;248;248;242m   [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  Layout --[0m
[38;2;248;248;242m   [0m[38;2;117;113;94m--[0m[38;2;117;113;94m-----------[0m
[38;2;248;248;242m   [0m[38;2;117;113;94m--[0m[38;2;117;113;94m-------------[0m
[38;2;248;248;242m   [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  Keycodes --[0m
[38;2;248;248;242m   [0m[38;2;117;113;94m--[0m[38;2;117;113;94m-------------[0m

[38;2;248;248;242m   [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  Keycodes copy/pasted from the excelent Keyberon Rust firmware:[0m
[38;2;248;248;242m   [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  https://github.com/TeXitoi/keyberon/[0m

[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m Key_Code_T [0m[38;2;249;38;114mis[0m
[38;2;248;248;242m     ([0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   The "no" key, a placeholder to express nothing.[0m
[38;2;248;248;242m      No, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  = 0x00,[0m
[38;2;248;248;242m          [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  / Error if too much keys are pressed at[0m
[38;2;248;248;242m          [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  the same time.[0m
[38;2;248;248;242m      ErrorRollOver,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  / The POST fail error.[0m
[38;2;248;248;242m      PostFail,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  / An undefined error occured.[0m
[38;2;248;248;242m      ErrorUndefined,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  / `a` and `A`.[0m
[38;2;248;248;242m      A,[0m
[38;2;248;248;242m      B,[0m
[38;2;248;248;242m      C,[0m
[38;2;248;248;242m      D,[0m
[38;2;248;248;242m      E,[0m
[38;2;248;248;242m      F,[0m
[38;2;248;248;242m      G,[0m
[38;2;248;248;242m      H,[0m
[38;2;248;248;242m      I,[0m
[38;2;248;248;242m      J,[0m
[38;2;248;248;242m      K,[0m
[38;2;248;248;242m      L,[0m
[38;2;248;248;242m      M, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  0x10[0m
[38;2;248;248;242m      N,[0m
[38;2;248;248;242m      O,[0m
[38;2;248;248;242m      P,[0m
[38;2;248;248;242m      Q,[0m
[38;2;248;248;242m      R,[0m
[38;2;248;248;242m      S,[0m
[38;2;248;248;242m      T,[0m
[38;2;248;248;242m      U,[0m
[38;2;248;248;242m      V,[0m
[38;2;248;248;242m      W,[0m
[38;2;248;248;242m      X,[0m
[38;2;248;248;242m      Y,[0m
[38;2;248;248;242m      Z,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `1` and `!`.[0m
[38;2;248;248;242m      Kb1,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `2` and `@`.[0m
[38;2;248;248;242m      Kb2,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `3` and `#`.[0m
[38;2;248;248;242m      Kb3, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  0x20[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  / `4` and `$`.[0m
[38;2;248;248;242m      Kb4,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `5` and `%`.[0m
[38;2;248;248;242m      Kb5,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `6` and `^`.[0m
[38;2;248;248;242m      Kb6,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `7` and `&`.[0m
[38;2;248;248;242m      Kb7,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `8` and `*`.[0m
[38;2;248;248;242m      Kb8,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `9` and `(`.[0m
[38;2;248;248;242m      Kb9,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `0` and `)`.[0m
[38;2;248;248;242m      Kb0,[0m
[38;2;248;248;242m      Enter,[0m
[38;2;248;248;242m      Escape,[0m
[38;2;248;248;242m      BSpace,[0m
[38;2;248;248;242m      Tab,[0m
[38;2;248;248;242m      Space,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `-` and `_`.[0m
[38;2;248;248;242m      Minus,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `=` and `+`.[0m
[38;2;248;248;242m      Equal,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `[` and `{`.[0m
[38;2;248;248;242m      LBracket,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `]` and `}`.[0m
[38;2;248;248;242m      RBracket, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  0x30[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  / `\` and `|`.[0m
[38;2;248;248;242m      Bslash,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Non-US `#` and `~` (Typically near the Enter key).[0m
[38;2;248;248;242m      NonUsHash,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `;` and `:`.[0m
[38;2;248;248;242m      SColon,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `'` and `"`.[0m
[38;2;248;248;242m      Quote,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  How to have ` as code?[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   \` and `~`.[0m
[38;2;248;248;242m      Grave,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `,` and `<`.[0m
[38;2;248;248;242m      Comma,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `.` and `>`.[0m
[38;2;248;248;242m      Dot,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   `/` and `?`.[0m
[38;2;248;248;242m      Slash,[0m
[38;2;248;248;242m      CapsLock,[0m
[38;2;248;248;242m      F1,[0m
[38;2;248;248;242m      F2,[0m
[38;2;248;248;242m      F3,[0m
[38;2;248;248;242m      F4,[0m
[38;2;248;248;242m      F5,[0m
[38;2;248;248;242m      F6,[0m
[38;2;248;248;242m      F7, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  0x40[0m
[38;2;248;248;242m      F8,[0m
[38;2;248;248;242m      F9,[0m
[38;2;248;248;242m      F10,[0m
[38;2;248;248;242m      F11,[0m
[38;2;248;248;242m      F12,[0m
[38;2;248;248;242m      PScreen,[0m
[38;2;248;248;242m      ScrollLock,[0m
[38;2;248;248;242m      Pause,[0m
[38;2;248;248;242m      Insert,[0m
[38;2;248;248;242m      Home,[0m
[38;2;248;248;242m      PgUp,[0m
[38;2;248;248;242m      Delete,[0m
[38;2;248;248;242m      Endd,[0m
[38;2;248;248;242m      PgDown,[0m
[38;2;248;248;242m      Right,[0m
[38;2;248;248;242m      Left, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  0x50[0m
[38;2;248;248;242m      Down,[0m
[38;2;248;248;242m      Up,[0m
[38;2;248;248;242m      NumLock,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Keypad `/`[0m
[38;2;248;248;242m      KpSlash,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Keypad `*`[0m
[38;2;248;248;242m      KpAsterisk,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Keypad `-`.[0m
[38;2;248;248;242m      KpMinus,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Keypad `+`.[0m
[38;2;248;248;242m      KpPlus,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Keypad enter.[0m
[38;2;248;248;242m      KpEnter,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Keypad 1.[0m
[38;2;248;248;242m      Kp1,[0m
[38;2;248;248;242m      Kp2,[0m
[38;2;248;248;242m      Kp3,[0m
[38;2;248;248;242m      Kp4,[0m
[38;2;248;248;242m      Kp5,[0m
[38;2;248;248;242m      Kp6,[0m
[38;2;248;248;242m      Kp7,[0m
[38;2;248;248;242m      Kp8, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  0x60[0m
[38;2;248;248;242m      Kp9,[0m
[38;2;248;248;242m      Kp0,[0m
[38;2;248;248;242m      KpDot,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Non-US `\` and `|` (Typically near the Left-Shift key)[0m
[38;2;248;248;242m      NonUsBslash,[0m
[38;2;248;248;242m      Application, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  0x65[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  / not a key, used for errors[0m
[38;2;248;248;242m      Power,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Keypad `=`.[0m
[38;2;248;248;242m      KpEqual,[0m
[38;2;248;248;242m      F13,[0m
[38;2;248;248;242m      F14,[0m
[38;2;248;248;242m      F15,[0m
[38;2;248;248;242m      F16,[0m
[38;2;248;248;242m      F17,[0m
[38;2;248;248;242m      F18,[0m
[38;2;248;248;242m      F19,[0m
[38;2;248;248;242m      F20,[0m
[38;2;248;248;242m      F21, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  0x70[0m
[38;2;248;248;242m      F22,[0m
[38;2;248;248;242m      F23,[0m
[38;2;248;248;242m      F24,[0m
[38;2;248;248;242m      Execute,[0m
[38;2;248;248;242m      Help,[0m
[38;2;248;248;242m      Menu,[0m
[38;2;248;248;242m      Selectt,[0m
[38;2;248;248;242m      Stop,[0m
[38;2;248;248;242m      Again,[0m
[38;2;248;248;242m      Undo,[0m
[38;2;248;248;242m      Cut,[0m
[38;2;248;248;242m      Copy,[0m
[38;2;248;248;242m      Paste,[0m
[38;2;248;248;242m      Find,[0m
[38;2;248;248;242m      Mute,[0m
[38;2;248;248;242m      VolUp, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  0x80[0m
[38;2;248;248;242m      VolDown,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Deprecated.[0m
[38;2;248;248;242m      LockingCapsLock,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Deprecated.[0m
[38;2;248;248;242m      LockingNumLock,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Deprecated.[0m
[38;2;248;248;242m      LockingScrollLock,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  / Keypad `,`, also used for the[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  brazilian keypad period (.) key.[0m
[38;2;248;248;242m      KpComma,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Used on AS/400 keyboard[0m
[38;2;248;248;242m      KpEqualSign,[0m
[38;2;248;248;242m      Intl1,[0m
[38;2;248;248;242m      Intl2,[0m
[38;2;248;248;242m      Intl3,[0m
[38;2;248;248;242m      Intl4,[0m
[38;2;248;248;242m      Intl5,[0m
[38;2;248;248;242m      Intl6,[0m
[38;2;248;248;242m      Intl7,[0m
[38;2;248;248;242m      Intl8,[0m
[38;2;248;248;242m      Intl9,[0m
[38;2;248;248;242m      Lang1, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  0x90[0m
[38;2;248;248;242m      Lang2,[0m
[38;2;248;248;242m      Lang3,[0m
[38;2;248;248;242m      Lang4,[0m
[38;2;248;248;242m      Lang5,[0m
[38;2;248;248;242m      Lang6,[0m
[38;2;248;248;242m      Lang7,[0m
[38;2;248;248;242m      Lang8,[0m
[38;2;248;248;242m      Lang9,[0m
[38;2;248;248;242m      AltErase,[0m
[38;2;248;248;242m      SysReq,[0m
[38;2;248;248;242m      Cancel,[0m
[38;2;248;248;242m      Clear,[0m
[38;2;248;248;242m      Prior,[0m
[38;2;248;248;242m      Returnn,[0m
[38;2;248;248;242m      Separator,[0m
[38;2;248;248;242m      Outt, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  0xA0[0m
[38;2;248;248;242m      Oper,[0m
[38;2;248;248;242m      ClearAgain,[0m
[38;2;248;248;242m      CrSel,[0m
[38;2;248;248;242m      ExSel,[0m

[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  According to QMK, 0xA5-0xDF are not[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  usable on modern keyboards[0m

[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  Modifiers[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Left Control.[0m
[38;2;248;248;242m      LCtrl, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  = 0xE0,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  / Left Shift.[0m
[38;2;248;248;242m      LShift,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Left Alt.[0m
[38;2;248;248;242m      LAlt,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Left GUI (the Windows key).[0m
[38;2;248;248;242m      LGui,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Right Control.[0m
[38;2;248;248;242m      RCtrl,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Right Shift.[0m
[38;2;248;248;242m      RShift,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Right Alt (or Alt Gr). [0m
[38;2;248;248;242m      RAlt,[0m
[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Right GUI (the Windows key).[0m
[38;2;248;248;242m      RGui, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  0xE7[0m

[38;2;248;248;242m      [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  Unofficial[0m
[38;2;248;248;242m      MediaPlayPause, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   0xE8,[0m
[38;2;248;248;242m      MediaStopCD,[0m
[38;2;248;248;242m      MediaPreviousSong,[0m
[38;2;248;248;242m      MediaNextSong,[0m
[38;2;248;248;242m      MediaEjectCD,[0m
[38;2;248;248;242m      MediaVolUp,[0m
[38;2;248;248;242m      MediaVolDown,[0m
[38;2;248;248;242m      MediaMute,[0m
[38;2;248;248;242m      MediaWWW, [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  0xF0[0m
[38;2;248;248;242m      MediaBack,[0m
[38;2;248;248;242m      MediaForward,[0m
[38;2;248;248;242m      MediaStop,[0m
[38;2;248;248;242m      MediaFind,[0m
[38;2;248;248;242m      MediaScrollUp,[0m
[38;2;248;248;242m      MediaScrollDown,[0m
[38;2;248;248;242m      MediaEdit,[0m
[38;2;248;248;242m      MediaSleep,[0m
[38;2;248;248;242m      MediaCoffee,[0m
[38;2;248;248;242m      MediaRefresh,[0m
[38;2;248;248;242m      MediaCalc [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  0xFB[0m
[38;2;248;248;242m     );[0m

[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m Action_Type [0m[38;2;249;38;114mis[0m[38;2;248;248;242m (Key, No_Op, Trans, Layer, Multiple_Actions);[0m

[38;2;248;248;242m   [0m[38;2;117;113;94m--[0m[38;2;117;113;94m   Should be a discriminated type[0m
[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m Action [0m[38;2;249;38;114mis[0m[38;2;248;248;242m [0m[38;2;249;38;114mrecord[0m
[38;2;249;38;114m      [0m[38;2;166;226;46mT[0m[38;2;249;38;114m :[0m[38;2;248;248;242m Action_Type; [0m[38;2;117;113;94m--[0m[38;2;117;113;94m  hould be the discriminant[0m
[38;2;249;38;114m      [0m[38;2;166;226;46mC[0m[38;2;249;38;114m :[0m[38;2;248;248;242m Key_Code_T;[0m
[38;2;249;38;114m      [0m[38;2;166;226;46mL[0m[38;2;249;38;114m :[0m[38;2;248;248;242m Natural;[0m
[38;2;248;248;242m   [0m[38;2;249;38;114mend record[0m[38;2;248;248;242m;[0m

[38;2;248;248;242m   [0m[38;2;249;38;114mfunction[0m[38;2;248;248;242m [0m[38;2;166;226;46mKw[0m[38;2;248;248;242m (Code : Key_Code_T) [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m Action;[0m
[38;2;248;248;242m   [0m[38;2;249;38;114mfunction[0m[38;2;248;248;242m [0m[38;2;166;226;46mLw[0m[38;2;248;248;242m (V : Natural) [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m Action;[0m

[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m Key_Modifiers [0m[38;2;249;38;114mis[0m[38;2;248;248;242m [0m[38;2;249;38;114marray[0m[38;2;248;248;242m (Natural [0m[38;2;249;38;114mrange[0m[38;2;248;248;242m <>) [0m[38;2;249;38;114mof[0m[38;2;248;248;242m USB.Device.HID.Keyboard.Modifiers;[0m

[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m Key_Codes_T [0m[38;2;249;38;114mis[0m[38;2;248;248;242m [0m[38;2;249;38;114marray[0m[38;2;248;248;242m (Natural [0m[38;2;249;38;114mrange[0m[38;2;248;248;242m <>) [0m[38;2;249;38;114mof[0m[38;2;248;248;242m Key_Code_T;[0m

[38;2;248;248;242m   [0m[38;2;249;38;114msubtype[0m[38;2;248;248;242m Ac [0m[38;2;249;38;114mis[0m[38;2;248;248;242m Action;[0m
[38;2;248;248;242m   [0m[38;2;249;38;114mtype[0m[38;2;248;248;242m Layout [0m[38;2;249;38;114mis[0m[38;2;248;248;242m [0m[38;2;249;38;114marray[0m[38;2;248;248;242m ([0m[38;2;190;132;255m0[0m[38;2;248;248;242m .. Num_Layers - [0m[38;2;190;132;255m1[0m[38;2;248;248;242m, RowR, ColR) [0m[38;2;249;38;114mof[0m[38;2;248;248;242m Action;[0m
[38;2;248;248;242m   [0m[38;2;249;38;114mprocedure[0m[38;2;248;248;242m [0m[38;2;166;226;46mRegister_Events[0m[38;2;248;248;242m (L : Layout; Es : Events);[0m
[38;2;248;248;242m   [0m[38;2;249;38;114mprocedure[0m[38;2;248;248;242m [0m[38;2;166;226;46mTick[0m[38;2;248;248;242m (L : Layout);[0m

[38;2;248;248;242m   [0m[38;2;249;38;114mfunction[0m[38;2;248;248;242m [0m[38;2;166;226;46mGet_Key_Codes[0m[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m Key_Codes_T;[0m
[38;2;248;248;242m   [0m[38;2;249;38;114mfunction[0m[38;2;248;248;242m [0m[38;2;166;226;46mGet_Modifiers[0m[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m Key_Modifiers;[0m
[38;2;248;248;242m   [0m[38;2;249;38;114mprocedure[0m[38;2;248;248;242m [0m[38;2;166;226;46mInit[0m[38;2;248;248;242m;[0m
[38;2;249;38;114mend[0m[38;2;248;248;242m [0m[38;2;166;226;46mClick[0m[38;2;248;248;242m;[0m
